/*******************************************************************************
 * Package: com.hadoop.flow
 * Type:    FlowPartitioner
 * Date:    2024-05-16 10:23
 *
 * Copyright (c) 2024 LTD All Rights Reserved.
 *
 * You may not use this file except in compliance with the License.
 *******************************************************************************/
package com.hadoop.flow;

import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Partitioner;

/**
 * 功能描述：
 *（分区器）是用于将Map阶段输出的键值对按照一定规则进行分区的组件。它的主要作用是将具有相同键的键值对分发到同一个Reduce任务进行处理。
 * 根据手机号前位进行分区操作（生成多个文件）
 * @author Songxianyang
 * @date 2024-05-16 10:23
 */
public class FlowPartitioner extends Partitioner<Text, FlowWritable> {
    @Override
    public int getPartition(Text text, FlowWritable flowWritable, int numPartitions) {

        String phoneIdSub = text.toString().substring(0, 2);

        //定义一个分区号变量partition,根据prePhone设置分区号
        int partition;
        if ("13".equals(phoneIdSub)) {
            partition=0;
        } else if ("15".equals(phoneIdSub)) {
            partition=1;
        } else {
            partition=2;
        }
        return partition;
    }
}
